Array.of(3, 11, 8) // [3,11,8]
Array.of(3) // [3]
// 数组实例的 copyWithin 方法，在当前数组内部，将指定位置的成员复制到其他位置（会覆盖原有成员）
// target（必需）：从该位置开始替换数据。
// start（可选）：从该位置开始读取数据，默认为0。如果为负值，表示倒数。
// end（可选）：到该位置前停止读取数据，默认等于数组长度。如果为负值，表示倒数。
[1, 2, 3, 4, 5].copyWithin(0, 3)
// [4, 5, 3, 4, 5]
[1, 4, -5, 10].find((n) => n < 0)
// -5

[1, 5, 10, 15].find(function (value, index, arr) {
    return value > 9;
}) // 10

[1, 5, 10, 15].findIndex(function (value, index, arr) {
    return value > 9;
}) // 2
['a', 'b', 'c'].fill(7)
// [7, 7, 7]
['a', 'b', 'c'].fill(7, 1, 2)
// ['a', 7, 'c']

for (let index of ['a', 'b'].keys()) {
    console.log(index);
}
// 0
// 1
for (let elem of ['a', 'b'].values()) {
    console.log(elem);
}
// 'a'
// 'b'
for (let [index, elem] of ['a', 'b'].entries()) {
    console.log(index, elem);
}
// 0 "a"
// 1 "b"

[1, 2, 3].includes(2);
// ES5对空位的处理，已经很不一致了，大多数情况下会忽略空位。
// forEach() , filter() , every() 和 some() 都会跳过空位。
// map() 会跳过空位，但会保留这个值
// join() 和 toString() 会将空位视为 undefined ，而 undefined 和 null 会被处理成空字符串

// forEach方法
[, 'a'].forEach((x, i) => log(i)); // 1
// filter方法
['a', , 'b'].filter(x => true); // ['a','b']
// every方法
[, 'a'].every(x => x === 'a'); // true
// some方法
[, 'a'].some(x => x !== 'a'); // false
// map方法
[, 'a'].map(x => 1); // [,1]
// join方法
[, 'a', undefined, null].join('#'); // "#a##"
// toString方法
[, 'a', undefined, null].toString(); // ",a,,"

// ES6则是明确将空位转为 undefined 。
